package us.codecraft.webmagic.selector;

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;

/**
 * Replace selector.<br>
 *
 * @author code4crafter@gmail.com <br>
 * @since 0.1.0
 */
public class ReplaceSelector implements Selector {

	private String regexStr;

	private String replacement;

	private Pattern regex;

	public ReplaceSelector(String regexStr, String replacement) {
		this.regexStr = regexStr;
		this.replacement = replacement;
		try {
			regex = Pattern.compile(regexStr);
		} catch (PatternSyntaxException e) {
			throw new IllegalArgumentException("invalid regex", e);
		}
	}

	@Override
	public String select(String text) {
		Matcher matcher = regex.matcher(text);
		return matcher.replaceAll(replacement);
	}

	@Override
	public List<String> selectList(String text) {
		List<String> lt = new ArrayList<String>();
		lt.add(select(text));
		return lt;
	}

	@Override
	public String toString() {
		return regexStr + "_" + replacement;
	}

}
